

// 将 基础对象Function 当作作一个实例来对待
let instance = Function ;

let names = Object.getOwnPropertyNames( instance );

console.log( '- - - Function类的静态属性- - -' );
for (let i in names ) {
    console.log( i , names[ i ] );
}

// console.log( Function.name , Function.length , Function.prototype );

console.log( '- - - Function原型的属性- - -' );

instance = Function.prototype ;
names = Object.getOwnPropertyNames( instance );
for (let i in names ) {
    console.log( i , names[ i ] );
}

console.log( '- - - - - - - - - - - - - - -');

// 所有使用 function 声明的函数都是 Function类的实例
// 因此 函数可以使用 Function.prototype 上声明的属性
// let f = new Function( 'a', 'b' , ' console.log( a , b ) ; return a + b ;' );
function f( a , b ){
    console.log( a , b ) ; 
    return a + b ;
}

console.log( f.name );
console.log( f.length );
console.log( f.toString() );

let r = f( 100 , 200 );
console.log( r );